#include "LED\led.h"

#define LED0 GPIO_PIN_5
#define LED1 GPIO_PIN_6
#define LED2 GPIO_PIN_8

#define LED0_GPIO_PORT GPIOG
#define LED1_GPIO_PORT GPIOG
#define LED2_GPIO_PORT GPIOG

static void LED_ON(uint8_t number)
{
	switch(number)
	{
		case 0 :
			HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0, GPIO_PIN_RESET);
			break;
		case 1 :
			HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1, GPIO_PIN_RESET);
			break;
		case 2:
			HAL_GPIO_WritePin(LED2_GPIO_PORT, LED2, GPIO_PIN_RESET);
			break;
		default:
			break;
	}
}

static void LED_OFF(uint8_t number)
{
	switch(number)
	{
		case 0 :
			HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0, GPIO_PIN_SET);
			break;
		case 1 :
			HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1, GPIO_PIN_SET);
			break;
		case 2:
			HAL_GPIO_WritePin(LED2_GPIO_PORT, LED2, GPIO_PIN_SET);
			break;
		default:
			break;
	}
}

static void LED_TRUN(uint8_t number)
{
	switch(number)
	{
		case 0 :
			HAL_GPIO_TogglePin(LED0_GPIO_PORT, LED0);
			break;
		case 1 :
			HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1);
			break;
		case 2:
			HAL_GPIO_TogglePin(LED2_GPIO_PORT, LED2);
			break;
		default:
			break;
	}
}

/* 构造对象 */
static struct LED_Class led_class = {
	.init = NULL,
	.ON = LED_ON,
	.OFF = LED_OFF,
	.TRUN = LED_TRUN
};	


struct LED_Class *get_LED_Class(void)
{
	return &led_class;
}

